package com.example.juyixia;



import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.ImageView;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

import com.baidu.mapapi.SDKInitializer;

import com.example.service.ActiveService;
import com.example.service.Agreerec;
import com.example.service.MessService;
import com.example.service.RecmessService;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;

public class MainActivity extends Activity implements OnClickListener{
	public static final String bm="utf-8";
	private FragmentManager fragmentManager;
	private Set_Fragment set_fragment;
	private Active_Fragment active_fragment;
	private Friend_Fragment friend_fragment;
	private Chat_Fragment chat_fragment;
	private  Myinfo myinfo;
	/**
	 * 消息界面布局
	 */
	private View mPageXiaoXi;

	/**
	 * 好友界面布局
	 */
	private View mPageFriend;

	/**
	 * 活动界面布局
	 */
	private View mPageActivity;

	/**
	 * 设置界面布局
	 */
	private View mPageSetting;

	/**
	 * 在Tab布局上显示消息图标的控件
	 */
	private ImageView mXiaoXiImg;

	/**
	 * 在Tab布局上显示联系人图标的控件
	 */
	private ImageView mFriendImg;

	/**
	 * 在Tab布局上显示动态图标的控件
	 */
	private ImageView mActivityImg;

	/**
	 * 在Tab布局上显示设置图标的控件
	 */
	private ImageView mSettingImg;
	

	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		SDKInitializer.initialize(getApplicationContext());
		setContentView(R.layout.activity_main);
		// 初始化布局元素
		initViews();

		myinfo=(Myinfo)getApplication();
		Intent messIntent = new Intent(this,MessService.class);
		String uid = myinfo.getUserid();
		messIntent.putExtra("id", uid);
		startService(messIntent);
		startService(new Intent(this,Agreerec.class));
		startService(new Intent(this,RecmessService.class));

		fragmentManager = getFragmentManager();

		// 第一次启动时选中第0个tab
		setTabSelection(0);

	}

	/**
	 * 在这里获取到每个需要用到的控件的实例，并给它们设置好必要的点击事件。
	 */
	private void initViews() {
		mPageXiaoXi = findViewById(R.id.id_page_xiaoxi);
		mPageFriend = findViewById(R.id.id_page_friend);
		mPageActivity = findViewById(R.id.id_page_activity);
		mPageSetting = findViewById(R.id.id_page_settings);
		mXiaoXiImg = (ImageView) findViewById(R.id.id_page_xiaoxi_img);
		mFriendImg = (ImageView) findViewById(R.id.id_page_friend_img);
		mActivityImg = (ImageView) findViewById(R.id.id_page_activity_img);
		mSettingImg = (ImageView) findViewById(R.id.id_page_settings_img);
		mPageXiaoXi.setOnClickListener(this);
		mPageFriend.setOnClickListener(this);
		mPageActivity.setOnClickListener(this);
		mPageSetting.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.id_page_xiaoxi:
			// 当点击了消息tab时，选中第1个tab
			setTabSelection(0);
			break;
		case R.id.id_page_friend:
			// 当点击了联系人tab时，选中第2个tab
			setTabSelection(1);
			break;
		case R.id.id_page_activity:
			// 当点击了动态tab时，选中第3个tab
			setTabSelection(2);
			break;
		case R.id.id_page_settings:
			// 当点击了设置tab时，选中第4个tab
			setTabSelection(3);
			break;
		default:
			break;
		}
	}

	/**
	 * 根据传入的index参数来设置选中的tab页。
	 * 
	 * @param index
	 *            每个tab页对应的下标。0表示消息，1表示联系人，2表示动态，3表示设置。
	 */
	private void setTabSelection(int index) {
		FragmentTransaction transaction = fragmentManager.beginTransaction();
		// 每次选中之前先清楚掉上次的选中状态
		resetImg();
		// 开启一个Fragment事务
		
		// 先隐藏掉所有的Fragment，以防止有多个Fragment显示在界面上的情况
		hideFragments(transaction);
		switch (index) {
		case 0:
			// 当点击了消息tab时，改变控件的图片和文字颜色
			
			mXiaoXiImg.setImageResource(R.drawable.tab_xiaoxi_pressed);
			if (chat_fragment == null) {
				// 如果MessageFragment为空，则创建一个并添加到界面上
				chat_fragment = new Chat_Fragment();
				transaction.add(R.id.content, chat_fragment);
			} else {
				// 如果MessageFragment不为空，则直接将它显示出来
				transaction.show(chat_fragment);
			}
			break;
		case 1:
			// 当点击了联系人tab时，改变控件的图片和文字颜色
			mFriendImg.setImageResource(R.drawable.tab_friend_pressed);
			if (friend_fragment == null) {
				// 如果ContactsFragment为空，则创建一个并添加到界面上
				friend_fragment = new Friend_Fragment();
				transaction.add(R.id.content, friend_fragment);
			} else {
				// 如果ContactsFragment不为空，则直接将它显示出来
				transaction.show(friend_fragment);
			}
			break;
		case 2:
			// 当点击了动态tab时，改变控件的图片和文字颜色
			mActivityImg.setImageResource(R.drawable.tab_activity_pressed);
			if (active_fragment == null) {
				// 如果NewsFragment为空，则创建一个并添加到界面上
				active_fragment = new Active_Fragment();
				transaction.add(R.id.content, active_fragment);
			} else {
				// 如果NewsFragment不为空，则直接将它显示出来
				transaction.show(active_fragment);
			}
			break;
		case 3:
		default:
			// 当点击了设置tab时，改变控件的图片和文字颜色
			mSettingImg.setImageResource(R.drawable.tab_settings_pressed);
			if (set_fragment == null) {
				// 如果SettingFragment为空，则创建一个并添加到界面上
				set_fragment = new Set_Fragment();
				transaction.add(R.id.content, set_fragment);
			} else {
				// 如果SettingFragment不为空，则直接将它显示出来
				transaction.show(set_fragment);
			}
			break;
		}
		transaction.commit();
	}

	/**
	 * 清除掉所有的选中状态。
	 */
	private void resetImg() {
		mXiaoXiImg.setImageResource(R.drawable.tab_xiaoxi_normal);
		mFriendImg.setImageResource(R.drawable.tab_friend_normal);
		mActivityImg.setImageResource(R.drawable.tab_activity_normal);
		mSettingImg.setImageResource(R.drawable.tab_settings_normal);
	}
	/**
	 * 将所有的Fragment都置为隐藏状态。
	 * 
	 * @param transaction
	 *            用于对Fragment执行操作的事务
	 */
	private void hideFragments(FragmentTransaction transaction) {
		if (chat_fragment != null) {
			transaction.hide(chat_fragment);
		}
		if (friend_fragment != null) {
			transaction.hide(friend_fragment);
		}
		if (set_fragment != null) {
			transaction.hide(set_fragment);
		}
		if (active_fragment != null) {
			transaction.hide(active_fragment);
		}
	}

	
	
	
}
